/**
 * 公共service
 */
import { Op } from 'sequelize';
import { Service } from 'egg';
export default  class CommonBaseService extends Service{
  model:any
  constructor(ctx) {
    super(ctx);
  }

  /**
   * 添加数据
   * @param obj 目标对象
   */
public  async create(obj) {
     return  await this.model.create(obj);
  }
  /**
   * 根据条件查询多条数据
   * @param where 查询条件
   */
  public  async findAll(where?) {
      return  await this.model.findAll(where);
      }
  /**
   * 根据条件查询单条数据
   * @param where 查询条件
   */
  public async findOne(where, obj) {
      return await this.model.findOne(where, obj)
  }
  /**
   * 删除数据
   * @param where 查询条件
   */
  public async del(id) {
      return await this.model.remove({ id });
  }
  /**
   * 更新数据
   * @param where 查询条件
   */
  public async update(obj) {
      return  await this.model.update({ id: obj.id }, obj);
  }
  /**
   * 排序数据
   * @param number 1 升序, -1降序
   */
  public async  sort(number) {
      return await this.model.sort({ sort: number });
  }
  /**
   * 分页查询处理
   * @param rowType 数据的类型,既模块类型
   * @param pageSize 每页数量
   * @param pageNum 当前页码
   * @param model 对象实体
   * @param obj 查询条件
   * @param filter 过滤条件
   */
  async getPageHandler(pageSize, pageNum, obj, sort) {
      const list =   await this.model.findAll({ limit: pageSize,offset:(pageNum - 1) * pageSize,where:{...obj},...sort})
      var totalNum = await this.model.count({where:{...obj}});
       return {
         list: list,
         total: totalNum,
         totalPages: Math.ceil(totalNum / pageSize),
         currentPage: pageNum
     }
  
  }
}
